iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 8
0
Mobile Development

Android心得筆記×Kotlin語法初探 不是新手村 是嬰兒村系列 第 8

[Day 8] Kotlin 語法 - 類別( Class )與物件( Object)

  • 分享至 

  • xImage
  •  

在 [Day 3] Kotlin 語法 - 類別 ( Class ) 一文中提到了 class 的建構子與 class 的寫法。

而今天要討論的是更延伸的用法與介紹 object 的觀念。

首先要提到,我們的生活周遭抑或是我們本身,皆可以用物件導向來比喻、解說,而物件導向中的物件( object ),即是我們所看到是所有物品甚至是人物,皆可歸類為 object。

文字有點抽象,用真實生活來比喻,現在你手上的電腦、路上跑的車子、甚至是你本身,都可以歸類為 object。


[Day 3] Kotlin 語法 - 類別 ( Class ) 中有舉個車子的例子,就以車子來做比喻。
首先,我們會先將車子這個 class 所有的屬性、行為封裝成一個 class。

open class Car() {
  var weight = 1500
        
  open fun drive() {
    //Car is driving
  }
}

我們會有一個 car class ,裡面有個屬性 - 車子的重量、有個行為 - 車子可以駕駛,到這邊這還不算是一台在路上跑的車子。

val Altis = Car()
val VIOS = Car()
val Tucson = Car()
val RAV4 = Car()

在這例子中,我使用 Car 這個 Class 建立了四個實體( object )的車子,而因為這四個 object 都是用 Class Car 來建立的,故這四個 object 的 weight 屬性與 drive 行為,皆來自於 Class Car。


最近 Tesla 很紅,但因為不是傳統的油車,平常駕駛是使用電能,若放在同一個 Class ,那創建出來的 object 駕駛模式該耗油還是電能呢?
所以原先的 drive 已經不適用於新的 Class,這個時候就可以利用繼承( extend )。

open class Car() {
  var weight = 1500
        
  open fun drive() {
    //Car is driving
  }
}

class Tesla(): Car() {
  override fun drive() {
    //Car is driving by Electric
  }
}

在 Java 中,繼承使用的關鍵字為 extend 而在 kotlin 裡則是使用 : ,繼承的話表示父類別所擁有的屬性、行為 子類別皆有,而這個例子中的 drive 因為必須用不同的方式駕駛,故需要 override 為適合的 function 。



修飾符在上面的範例程式碼,可以看到有一些 class 或是 function 前有加 open 修飾符,可以看到上表,因為 kotlin 預設為 final 是不可被繼承與 override ,故若要被繼承或者被 override ,需事先加上 open 修飾符。


上一篇
[Day 7] Kotlin 語法 - 迴圈 ( While、Do-While )
下一篇
[Day 9] Kotlin 語法 - Interface
系列文
Android心得筆記×Kotlin語法初探 不是新手村 是嬰兒村30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言